// promise 是一个解决层级不断嵌套地回调地狱问题,但代码量不会精简
// 把多层地嵌套改成串联式的函数调用

//1. promise 是一个构造函数，里面有很多地回调方法，其中有resolve 和 reject
//2.1 resolve---eg：决定，决策 --重申为：成功之后要做地事情， =》读取成功的函数
//2.2 reject----eg: 拒绝，抛弃----重申为：失败之后要做地事情，=》读取失败的函数

//3.在promise 构造函数的 pototype属性上，有一个 .then()方法
//也就是说，promise 构造函数的实例上都可以用 .then() 这个方法

//4.1 promise 创建的实例是一个异步操作，异步操作的结果只能有异步成功或者失败两种状态。
//4.2 由于属于异步操作，所以不能通过 return来拿到结果，
//    只能通过回调函数拿到成功或者失败的结果


const fs = require("fs")

function getFileByPath(fpath){
    return new Promise(function(resolve,reject){

        fs.readFile(fpath,'utf-8',(err,data)=>{//读取文件开始
            if(err) return reject(err)//错误就返回错误，同时结束调用，正确就跳过
            resolve(data)//成功之后要做地事情
        })//读取文件结束

    })
}



//先1，再2，最后3
getFileByPath('./files/1.txt')
    .then(function(data){//接着上行的函数的传参结果进行.then操作
        // console.log(data)
        var data2 = data//这里可以说拿到这个数据了
        console.log(data2)
        return getFileByPath("./files/2.txt")
    })
    .then(function(data){//接着上一步return出来的结果进行.then操作
        console.log(data)
        return getFileByPath("./files/3.txt")
    })
    .then(function(data){//接着上一步return出来的结果进行.then操作
        console.log(data)//data是属于resolve的data,而resolve的data属于Promise的data
    })















